<?php #title=П-и;
$view->title='Управление пользователями';
$user_groups=array();
$conn->query("select id,name from groups where type='users'");
while($row=$conn->fetch())
	$user_groups[$row->id]=$row->name;
/*Обработка форм пользователей*/
if(!empty($_GET['user_edit']))
{
	$f_name='user_edit';
	$user_id=$_GET['user_edit'];
	$o_user=false;
	$post=!empty($_POST[$f_name])?$_POST[$f_name]:false;
	$err=array();
	if($post)
	{
		if(empty($post['email']) || !preg_match('#^[\w][-_\w\.]*@[\w][-_\w]+\.+[a-z]{2,4}$#',strtolower($post['email'])))
			$err[]='email - обязательное поле, заполнено не корректно';
		elseif(isset($post['email_old']))
		{
			if($post['email']!=$post['email_old'])
			{
				$conn->query('select id from users where email=\''.mysql_escape_string(strtolower($post['email'])).'\'');		
				if($conn->fetch())
					$err[]='Пользователь с таким email уже существует';
			}
		}
		else $err[]='Системная ошибка';
	}
	$redirect=false;
	if($user_id=='new')
	{
		$o_user=(object)array('name'=>'','password'=>'','email'=>'','date_registred'=>'','date_last_visit'=>'','group_id'=>0,'note'=>'','the_god_mode'=>0);
		if($post && !$err)//Создать пользователя
		{
			if(empty($post['password']) || strlen($post['password'])<6)
				$err[]='Пароль не может быть пустым, минимум 6 символов';
			else
			{
				foreach($o_user as $p_name=>$val)
					if(isset($post[$p_name]))
					{
						if( $p_name=='password')
							$o_user->$p_name=mysql_escape_string(md5($post[$p_name]));
						else
							$o_user->$p_name=mysql_escape_string($post[$p_name]);
					}
				$user_id=$conn->query("insert into users (name, password, email, date_registred, group_id, note, the_god_mode)values('{$o_user->name}','{$o_user->password}','{$o_user->email}',now(),{$o_user->group_id},'{$o_user->note}',{$o_user->the_god_mode})",true);
				$this->conn->query("insert into users_groups_ids(is_user,object_id)values(1,$user_id)");
				$redirect=array('message'=>'Пользователь создан','url'=>'/admin/?p=_users&user_edit='.$user_id);
			}
		}
	}
	else
	{
		$conn->query("select * from users where id=$user_id");
		$o_user=$conn->fetch();
		if($post && !$err)//Создать пользователя
		{
			foreach($o_user as $p_name=>$val)
				if(isset($post[$p_name]))
				{
					if( $p_name=='password')
						$o_user->$p_name=mysql_escape_string(md5($post[$p_name]));
					else
						$o_user->$p_name=mysql_escape_string($post[$p_name]);
				}
			$user_id=$conn->query("update users set name='{$o_user->name}',".(!empty($post['password'])?" password='{$o_user->password}',":'')." email='{$o_user->email}', group_id={$o_user->group_id}, note='{$o_user->note}', the_god_mode={$o_user->the_god_mode} where id=$user_id",true);
			$redirect=array('message'=>'Данные пользователя обновлены');			
		}
	}
	if($redirect) successRedirect($redirect);
	if($post)
	{
		if($err)
			$view->gText.=$load->block('modal_win',array('title'=>'Ошибка','cont'=>'<ul><li>'.implode('</li><li>',$err).'</li></ul>'));
		foreach($o_user as $p_name=>$val)
			if(isset($post[$p_name]))
				$o_user->$p_name=$post[$p_name];
	}
	if($o_user)
	{
		$view->gText.='<form action="" method="post">
			<div class="fields-editor form">
				<div class="title"><span>Основное</span></div>
				<div class="data">
					<div class="field">
						<div class="desc">Имя:</div>'
							.$load->block('form_element',array('val'=>$o_user->name,'name'=>$f_name.'[name]'))
					.'</div>
					<div class="field">
						<div class="desc">email:</div>'
						.$load->block('form_element',array('val'=>$o_user->email,'name'=>$f_name.'[email]'))
						.'<input type="hidden" name="'.$f_name.'[email_old]" value="'.$o_user->email.'" />
					</div>
					<div class="field">
						<div class="desc">Пароль:</div>'
						.$load->block('form_element',array('type'=>'password','name'=>$f_name.'[password]'))
					.'</div>
					<div class="field">
						<div class="desc">Группа:</div>'
						.$load->block('form_element',array('val'=>$o_user->group_id,'type'=>'select','values'=>$user_groups,'name'=>$f_name.'[group_id]'))
					.'</div>
					<div class="field text_big">
						<div class="desc">Примечание:</div>'
						.$load->block('form_element',array('val'=>$o_user->note,'type'=>'textarea','name'=>$f_name.'[note]'))
					.'</div>'
					.($user->the_god_mode?'<div class="field">
						<div class="desc">Полный контроль:</div>'
						.$load->block('form_element',array('val'=>$o_user->the_god_mode,'type'=>'radio','name'=>$f_name.'[the_god_mode]','values'=>array('1'=>'Да','0'=>'Нет')))
					.'</div>':'')
					.$load->block('buttons',array('text'=>$user_id=='new'?'Добавить пользователя':'Обновить данные пользвателя','type'=>'submit'))
					.'<div class="clear"></div>'
				.'</div>';
		/* 	if(false && file_exists('user_special_datas.php'))
			{
				$user_special_datas=false;
				include('user_special_datas.php');
				if($user_special_datas)
				{
					$view->gText.='<div class="title" onclick="showHide(\'.data#more\')"><span>Дополнительно</span></div>
				<div class="data" id="more">';
					
					foreach($user_special_datas as $f_name=>$params)
					{
						$view->gText.='<div class="field">
							<div class="desc">'.$params['title'].'</div>
						</div>';
					}
					$view->gText.='<div class="clear"></div>
				</div>';
				}				
			} */
		$view->gText.='</div>
		</form>';
	}
	
	
}
elseif(!empty($_GET['permissions']))
{
	$obj_id=$_GET['permissions'];
	$is_user=isset($_GET['type'])&&$_GET['type']=='group'?0:1;
	$conn->query("select id from users_groups_ids where is_user=$is_user and object_id=$obj_id");
	$permiss_id=false;
	if($row=$conn->fetch())
		$permiss_id=$row->id;
	if($permiss_id)
	{
		$permissions=new Selectable_($conn,'permissions',$cache,$load,array('control_name'=>'Привилегии','object_id'=>$permiss_id));
		$view->gText.='<form action="" method="post">'.$permissions->getEdit($user->the_god_mode).'</form>';
	}
	
}
$view->gText.='<form action="/admin/?p=_users&user_edit=new" method="post">'.$load->block('buttons',array('style'=>'add','type'=>'submit','text'=>'Добавить пользователя')).'</form>'

.'<h3>Список ползователей</h3>'
.$load->block('table_editor',array(
	'can_edit'=>true,
	'select'=>array('from'=>'users', 'where'=>'1'),
	'delete'=>array('delete from users where id=#sys_id#'),
	'update'=>"update users set name='#name#',email='#email#',group_id=#group_id#,note='#note#' where id=#sys_id#",
	'fields'=>array(
		'id'=>array('sys_id'=>true,'title'=>'ID','to_edit'=>false,'hidden'=>true),
		'name'=>array('title'=>'Имя'),
		'email'=>array('title'=>'Email'),
		'group_id'=>array('title'=>'Группа','type'=>'select','values'=>$user_groups),
		'note'=>array('title'=>'Примечание','type'=>'textarea'),
		array('link'=>'<a href="/admin?p=_users&user_edit=#id#">редактировать</a>','to_edit'=>false),
		array('link'=>'<a href="/admin?p=_users&permissions=#id#">личные привелегии</a>','to_edit'=>false)
	),
	'link_replaces'=>array('id')
))
.'<h3>Группы пользователей</h3>'
.$load->block('table_editor',array(
	'can_edit'=>true,
	'select'=>array('from'=>'groups', 'where'=>'type=\'users\''),
	'delete'=>array('delete from groups where id in(#sys_ids#) and type=\'users\''),
	'update'=>"update groups set name='#name#',name_sys='#getGoodUrl|name_sys#' where id=#sys_id# and type='users'",
	'insert'=>array('ins_group_id'=>"insert into groups (type,name,name_sys)values('users','#name#','#getGoodUrl|name_sys#')",'insert into users_groups_ids(object_id)values(#ins_group_id#)'),
	'fields'=>array(
		'id'=>array('sys_id'=>true,'title'=>'ID','to_edit'=>false,'hidden'=>true),
		'name'=>array('title'=>'Название'),
		'name_sys'=>array('title'=>'Системное название'),
		array('link'=>'<a href="/admin?p=_users&permissions=#id#&type=group">Привелегии</a>','to_edit'=>false)
	),
	'link_replaces'=>array('id')
));